home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 076-100 / disk_087 / elib / funky.asm < prev    next >
Assembly Source File  |  1992-05-06  |  2KB  |  82 lines

  1. ;:ts=8
  2. ; Copyright (C) 1986 by Manx Software Systems, Inc.
  3. ;
  4.  
  5. ; ***    But FUNKIFIED by jimm ***
  6. ;    library base in D0
  7. ;    segment list in A0
  8. ;    execbase in A6
  9.  
  10. ;    Initial startup routine for Aztec C.
  11.  
  12. ;    NOTE: code down to "start" must be placed at beginning of
  13. ;        all programs linked with Aztec Linker using small
  14. ;        code or small data.
  15.  
  16.  
  17. a4save    dc.l    0
  18.  
  19.     public    .begin            ; just to resolve label
  20. .begin
  21.     public    _funkyInit
  22. _funkyInit:
  23.  
  24.     near    code
  25.  
  26.     movem.l    d0/d2/d3/d4-d7/a2-a6,-(sp)    
  27.  
  28.     ; FUNKY use a0, not a1 for segment list
  29.     move.l    a0,a4            ;BPTR to code seg
  30.     add.l    a4,a4
  31.     add.l    a4,a4            ;now real address of code seg
  32.  
  33.     move.l    (a4),a4            ;indirect to get data segment BPTR
  34.     add.l    a4,a4            ;convert to real pointer
  35.     add.l    a4,a4            ;real address of data seg link field
  36.  
  37.     ; same as crt0.a68
  38.     add.l    #32766+4,a4        ;bias appropriately (+4 is for link)
  39.     lea    __H1_end,a1
  40.     lea    __H2_org,a2
  41.     cmp.l    a1,a2            ;check if BSS and DATA together
  42.     bne    start            ;no, don't have to clear
  43.     move.w    #((__H2_end-__H2_org)/4)-1,d1
  44.     bmi    start            ;skip if no bss
  45.     move.l    #0,d2
  46. loop
  47.     move.l    d2,(a1)+        ;clear out memory
  48.     dbra    d1,loop
  49.  
  50. start
  51.     lea    a4save,a1        ;get address of a4save
  52.     move.l    a4,(a1)            ;save a4
  53. ;    FUNKY
  54. ;    move.l    sp,__savsp        ;save stack pointer (can't fexec)
  55. ;    move.l    4,a6            ;get Exec's library base pointer
  56.     move.l    a6,_SysBase        ;put where we can get it
  57.  
  58.     movem.l    d0/a0,-(sp)        ; pass base and seglist
  59.     jsr    _funkymain        ; FUNKY
  60.     addq.l    #8,sp            ;pop args to  funkymain()
  61.                     ; can pop better (?)
  62.  
  63.     movem.l    (sp)+,d0/d2/d3/d4-d7/a2-a6
  64.     rts                ;and return
  65.  
  66.     public    _geta4
  67. _geta4:
  68.     move.l    a4save,a4
  69.     rts
  70.  
  71.     dseg
  72.  
  73.  
  74. _SysBase    dc.l    0
  75.  
  76.     public    _funkymain
  77.     public    _SysBase
  78.     public    __H1_end,__H2_org,__H2_end
  79.  
  80.     end
  81.  
  82.